import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query';

import { AdminService } from '../services/admin.service.ts';

export interface IDismissHookOptions {
  invalidateQueries?: QueryKey[];
}

/**
 * Увольняет сотрудника.
 */
export const useDismiss = (options?: IDismissHookOptions) => {
  const queryClient = useQueryClient();

  const { mutate } = useMutation({
    mutationKey: ['admin', 'dismiss'],
    mutationFn: (id: number) => AdminService.dismiss(id),
    onSuccess() {
      // Заново подгружаем список пользователей
      queryClient.invalidateQueries({
        queryKey: ['admin', 'list', 'employees'],
      });

      // Валидируем все оставшиеся ключи
      options?.invalidateQueries?.forEach(queryKey => {
        queryClient.invalidateQueries({
          queryKey,
        });
      });
    },
  });

  return (id: number) => mutate(id);
};
